Many systems include a plurality of modules configured to perform designated functions within the system. The modules are supported in one or more chassis, and the modules are interconnected in the system, typically through a central controller. While the modules are frequently electronic modules, they can also include hydraulic and pneumatic modules, as well as optical modules in a fiber optic system. One example of a system utilizing electronic modules is a mass computer memory storage array. FIG. 1 depicts such a system 2, which includes a first memory array “A”, a second memory array “B”, and a central controller “C”. The system 2 depicted in FIG. 1 is a simplified diagram of a mass computer memory storage system, and is used for illustrative purposes only. The system 2 can, for example, be a computer server used to store Internet content, in which case the controller “C” is configured to send and receive large amounts of data to and from a telecommunications communications network. Another example of a use of the system 2 of FIG. 1 is to store large quantities of data used for analysis purposes, such as in imaging complex structures. Array “A” of the system 2 is connected to the controller “C” by cable 4, and array “B” is connected to the controller “C” by cable 18. Each array comprises a chassis (not shown) which supports the modules within the array. In one variation on the system depicted in FIG. 1, the system can comprises a single array “A”, and the control functions performed by the central controller can be incorporated within the cabinet 12 of array “A”. The system 2 can be further expanded by adding more arrays in communication with the central controller “C”.
The array “A” of FIG. 1 comprises a plurality of memory modules 5, 6 and 7, as well as auxiliary modules 8, 9, 10 and 11, which can comprise such things as power supplies, cooling fans, and local control modules. Array “B” of FIG. 1 can comprise similar modules, such as memory modules 15, 16 and 17. The controller “C” is configured to direct data to, and retrieve data from, any of the modules within either array. Consequently, the controller “C” contains a computer readable “map” of the overall memory array system, which identifies to the central controller the array and the module within the array where particular data is stored. This “map” allows the central controller to access stored data, to know where data can be stored without overwriting in-use sectors, and to “remember” where it has stored data. The specific methods for configuring such large memory array systems for the storage and retrieval of data are generally well known in the art, and will not be discussed further. However, some general features leading to shortcomings with the current state of the art will now be discussed.
The various modules in each array are removably supported within slots in the array. Removability allows a module to be removed for servicing or upgrades, and allows an operator to reconfigure the system by moving modules from one location to another. However, such removability introduces the opportunity for human error. For example, an operator can accidentally remove the wrong module from an array, can insert a module into the wrong slot within an array, or can insert a module into the wrong array. Since some systems have thousands of modules placed in hundreds of arrays, the opportunity for inserting the wrong module into the wrong slot is not unlikely. In many systems a particular slot in an array is dedicated to a particular module, which reduces, but does not eliminate, the chance for human error. However, in more advanced systems the central controller can be configured to automatically select a slot within an array, or within any array in the system, to perform a particular function, or to receive a particular module. This variability allows the system greater flexibility and operating efficiently, but greatly increases the opportunity for operator error.
By way of example, typically memory modules are actively backed-up using a dedicated module to back up two primary modules. For example, with respect to FIG. 1, a “data stripe” S1 can consist of two primary memory modules 5 and 6, and a back-up module 7. A single back-up module 7, when used in conjunction with a back-up algorithm and a computer processor, can be used to back-up the contents of two primary modules 5 and 6. For example, the back-up module 7 can store the binary sum of the modules 5 and 6. In this way, if memory is lost from module 5, it can be restored merely by processing the contents of modules 6 and 7 using the back-up algorithm to calculate the lost data in module 5. If one of the three modules is determined to be defective by a diagnostic program, a fourth available module can be put into service in the capacity of a back-up or a primary module. After the defective module has been repaired, it can be replaced into the slot from which it was removed or into another slot configured to receive the module, and the fourth module put into other service. However, if an operator were to accidentally reinstall the repaired module into the wrong slot, then any data which is lost in the first or second module cannot be restored. For example, let us assume that module 7 in data stripe S1 is defective, and module 20 in data stripe S4 is defective. Both modules 7 and 20 are then removed for service and repaired. If module 7 is subsequently and accidentally installed in an open slot not configured for back-up service of modules 5 and 6, then loss of data can occur due to the system configuration.
The system can be further complicated by advances in memory arrays, for example where the back-up module is selected by a controller, rather than being the third module in a memory stripe. In this instance, the back-up module can be one of any of the modules in the array in the system. Additionally, in some configurations the memory stripe consists of five or more memory modules, and so it is not always obvious that the third module down is the back-up module.
In addition to the risk of accidentally installing a module in the incorrect slot for that module, there is a risk that a defective module can accidentally be re-installed into the system prior to having been serviced, or having been improperly serviced. In this instance, using the defective module can lead to loss of data or other problems.
What is needed then is a way to decrease the risk that a module in a system will be installed into the wrong position, or that the module will be installed when it should not be.